interface as function types